/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.apli.haiam.ejb.entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author david.carranza
 */
@Entity
@Table(name = "cex_agenda")
@NamedQueries({
    @NamedQuery(name = "CexAgenda.findAll", query = "SELECT c FROM CexAgenda c")})
public class CexAgenda implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "cag_id")
    private Integer cagId;
    @Basic(optional = false)
    @Column(name = "cag_secuencia")
    private int cagSecuencia;
    @Basic(optional = false)
    @Column(name = "cag_estado")
    private int cagEstado;
    @Column(name = "cag_hora")
    @Temporal(TemporalType.TIME)
    private Date cagHora;
    @Column(name = "cag_id_institucion")
    private Integer cagIdInstitucion;
    @Basic(optional = false)
    @Column(name = "cag_tipo")
    private int cagTipo;
    @Column(name = "cag_nombre_institucion")
    private String cagNombreInstitucion;
    @Column(name = "cag_id_usuario")
    private Integer cagIdUsuario;
    @Column(name = "cag_nombre_usuario")
    private String cagNombreUsuario;
    @Basic(optional = false)
    @Column(name = "cag_fecha")
    @Temporal(TemporalType.DATE)
    private Date cagFecha;
    @Column(name = "cag_envio_hc")
    private Integer cagEnvioHc;
    @Column(name = "cag_recibo_hc")
    private Integer cagReciboHc;
    @Column(name = "cag_observacion")
    private String cagObservacion;
    @Column(name = "cag_fecha_registro")
    @Temporal(TemporalType.DATE)
    private Date cagFechaRegistro;
    @Column(name = "cag_hora_registro")
    @Temporal(TemporalType.TIME)
    private Date cagHoraRegistro;
    @Column(name = "cag_estado_reagendado")
    private Integer cagEstadoReagendado;
    @OneToMany(mappedBy = "cexAgenda", fetch = FetchType.LAZY)
    private List<CexPreparacion> cexPreparacionList;
    @JoinColumn(name = "chc_id", referencedColumnName = "chc_id")
    @ManyToOne(fetch = FetchType.LAZY)
    private CexHistoriaClinica cexHistoriaClinica;
    @JoinColumn(name = "chd_id", referencedColumnName = "chd_id")
    @ManyToOne(fetch = FetchType.LAZY)
    private CexHorariosDia cexHorariosDia;
    private transient boolean seleccionado;
    private transient int numeroHorario;

    public CexAgenda() {
    }

    public CexAgenda(Integer cagId) {
        this.cagId = cagId;
    }

    public CexAgenda(Integer cagId, int cagSecuencia, int cagEstado, int cagTipo, Date cagFecha) {
        this.cagId = cagId;
        this.cagSecuencia = cagSecuencia;
        this.cagEstado = cagEstado;
        this.cagTipo = cagTipo;
        this.cagFecha = cagFecha;
    }

    public Integer getCagId() {
        return cagId;
    }

    public void setCagId(Integer cagId) {
        this.cagId = cagId;
    }

    public int getCagSecuencia() {
        return cagSecuencia;
    }

    public void setCagSecuencia(int cagSecuencia) {
        this.cagSecuencia = cagSecuencia;
    }

    public int getCagEstado() {
        return cagEstado;
    }

    public void setCagEstado(int cagEstado) {
        this.cagEstado = cagEstado;
    }

    public Date getCagHora() {
        return cagHora;
    }

    public void setCagHora(Date cagHora) {
        this.cagHora = cagHora;
    }

    public Integer getCagIdInstitucion() {
        return cagIdInstitucion;
    }

    public void setCagIdInstitucion(Integer cagIdInstitucion) {
        this.cagIdInstitucion = cagIdInstitucion;
    }

    public int getCagTipo() {
        return cagTipo;
    }

    public void setCagTipo(int cagTipo) {
        this.cagTipo = cagTipo;
    }

    public String getCagNombreInstitucion() {
        return cagNombreInstitucion;
    }

    public void setCagNombreInstitucion(String cagNombreInstitucion) {
        this.cagNombreInstitucion = cagNombreInstitucion;
    }

    public Integer getCagIdUsuario() {
        return cagIdUsuario;
    }

    public void setCagIdUsuario(Integer cagIdUsuario) {
        this.cagIdUsuario = cagIdUsuario;
    }

    public String getCagNombreUsuario() {
        return cagNombreUsuario;
    }

    public void setCagNombreUsuario(String cagNombreUsuario) {
        this.cagNombreUsuario = cagNombreUsuario;
    }

    public Date getCagFecha() {
        return cagFecha;
    }

    public void setCagFecha(Date cagFecha) {
        this.cagFecha = cagFecha;
    }

    public Integer getCagEnvioHc() {
        return cagEnvioHc;
    }

    public void setCagEnvioHc(Integer cagEnvioHc) {
        this.cagEnvioHc = cagEnvioHc;
    }

    public Integer getCagReciboHc() {
        return cagReciboHc;
    }

    public void setCagReciboHc(Integer cagReciboHc) {
        this.cagReciboHc = cagReciboHc;
    }

    public String getCagObservacion() {
        return cagObservacion;
    }

    public void setCagObservacion(String cagObservacion) {
        this.cagObservacion = cagObservacion;
    }

    public Date getCagFechaRegistro() {
        return cagFechaRegistro;
    }

    public void setCagFechaRegistro(Date cagFechaRegistro) {
        this.cagFechaRegistro = cagFechaRegistro;
    }

    public Date getCagHoraRegistro() {
        return cagHoraRegistro;
    }

    public void setCagHoraRegistro(Date cagHoraRegistro) {
        this.cagHoraRegistro = cagHoraRegistro;
    }

    public Integer getCagEstadoReagendado() {
        return cagEstadoReagendado;
    }

    public void setCagEstadoReagendado(Integer cagEstadoReagendado) {
        this.cagEstadoReagendado = cagEstadoReagendado;
    }

    public List<CexPreparacion> getCexPreparacionList() {
        return cexPreparacionList;
    }

    public void setCexPreparacionList(List<CexPreparacion> cexPreparacionList) {
        this.cexPreparacionList = cexPreparacionList;
    }

    public CexHistoriaClinica getCexHistoriaClinica() {
        return cexHistoriaClinica;
    }

    public void setCexHistoriaClinica(CexHistoriaClinica cexHistoriaClinica) {
        this.cexHistoriaClinica = cexHistoriaClinica;
    }

    public CexHorariosDia getCexHorariosDia() {
        return cexHorariosDia;
    }

    public boolean isSeleccionado() {
        return seleccionado;
    }

    public void setSeleccionado(boolean seleccionado) {
        this.seleccionado = seleccionado;
    }

    public int getNumeroHorario() {
        return numeroHorario;
    }

    public void setNumeroHorario(int numeroHorario) {
        this.numeroHorario = numeroHorario;
    }
    
    

    public void setCexHorariosDia(CexHorariosDia cexHorariosDia) {
        this.cexHorariosDia = cexHorariosDia;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (cagId != null ? cagId.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof CexAgenda)) {
            return false;
        }
        CexAgenda other = (CexAgenda) object;
        if ((this.cagId == null && other.cagId != null) || (this.cagId != null && !this.cagId.equals(other.cagId))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "newpackage.CexAgenda[ cagId=" + cagId + " ]";
    }

}
